import UIKit

// In iOS 8.0 and later, your application must register for user notifications using -[UIApplication registerUserNotificationSettings:] before being able to schedule and present UILocalNotifications
@available(iOS, introduced: 4.0, deprecated: 10.0, message: "Use UserNotifications Framework's UNNotificationRequest")
extension QKC where AA :UILocalNotification {
	// timer-based scheduling
    open func fireDate_qk_s(_ fireDate:  Date?) -> QKC<AA,YY,ZZ, Date?>{
		return link(next: fireDate).then_QK { $0.value.fireDate = fireDate }
	}
    open func fireDate_qk_g() -> QKC<AA,YY,ZZ, Date?>{
		 self +^ self.value.fireDate
	}

	// pass a time zone to interpret fireDate as a wall time to be adjusted automatically upon time zone changes (e.g. for an alarm clock).
    open func timeZone_qk_s(_ timeZone:  TimeZone?) -> QKC<AA,YY,ZZ, TimeZone?>{
		return link(next: timeZone).then_QK { $0.value.timeZone = timeZone }
	}
    open func timeZone_qk_g() -> QKC<AA,YY,ZZ, TimeZone?>{
		 self +^ self.value.timeZone
	}

		// 0 means don't repeat
    open func repeatInterval_qk_s(_ repeatInterval:  NSCalendar.Unit ) -> QKC<AA,YY,ZZ, NSCalendar.Unit >{
		return link(next: repeatInterval).then_QK { $0.value.repeatInterval = repeatInterval }
	}
    open func repeatInterval_qk_g() -> QKC<AA,YY,ZZ, NSCalendar.Unit >{
		 self +^ self.value.repeatInterval
	}

    open func repeatCalendar_qk_s(_ repeatCalendar:  Calendar?) -> QKC<AA,YY,ZZ, Calendar?>{
		return link(next: repeatCalendar).then_QK { $0.value.repeatCalendar = repeatCalendar }
	}
    open func repeatCalendar_qk_g() -> QKC<AA,YY,ZZ, Calendar?>{
		 self +^ self.value.repeatCalendar
	}

	// when YES, the notification will only fire one time. when NO, the notification will fire every time the region is entered or exited (depending upon the CLRegion object's configuration). default is YES.
    @available(iOS 8.0, *)
    open func regionTriggersOnce_qk_s(_ regionTriggersOnce:  Bool) -> QKC<AA,YY,ZZ, Bool>{
		return link(next: regionTriggersOnce).then_QK { $0.value.regionTriggersOnce = regionTriggersOnce }
	}
    @available(iOS 8.0, *)
    open func regionTriggersOnce_qk_g() -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.regionTriggersOnce
	}

	// alerts
		// defaults to nil. pass a string or localized string key to show an alert
    open func alertBody_qk_s(_ alertBody:  String? ) -> QKC<AA,YY,ZZ, String? >{
		return link(next: alertBody).then_QK { $0.value.alertBody = alertBody }
	}
    open func alertBody_qk_g() -> QKC<AA,YY,ZZ, String? >{
		 self +^ self.value.alertBody
	}

		// defaults to YES. pass NO to hide launching button/slider
    open func hasAction_qk_s(_ hasAction:  Bool ) -> QKC<AA,YY,ZZ, Bool >{
		return link(next: hasAction).then_QK { $0.value.hasAction = hasAction }
	}
    open func hasAction_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.hasAction
	}

		// used in UIAlert button or 'slide to unlock...' slider in place of unlock
    open func alertAction_qk_s(_ alertAction:  String? ) -> QKC<AA,YY,ZZ, String? >{
		return link(next: alertAction).then_QK { $0.value.alertAction = alertAction }
	}
    open func alertAction_qk_g() -> QKC<AA,YY,ZZ, String? >{
		 self +^ self.value.alertAction
	}

		// used as the launch image (UILaunchImageFile) when launch button is tapped
    open func alertLaunchImage_qk_s(_ alertLaunchImage:  String? ) -> QKC<AA,YY,ZZ, String? >{
		return link(next: alertLaunchImage).then_QK { $0.value.alertLaunchImage = alertLaunchImage }
	}
    open func alertLaunchImage_qk_g() -> QKC<AA,YY,ZZ, String? >{
		 self +^ self.value.alertLaunchImage
	}

		// defaults to nil. pass a string or localized string key
    @available(iOS 8.2, *)
    open func alertTitle_qk_s(_ alertTitle:  String? ) -> QKC<AA,YY,ZZ, String? >{
		return link(next: alertTitle).then_QK { $0.value.alertTitle = alertTitle }
	}
    @available(iOS 8.2, *)
    open func alertTitle_qk_g() -> QKC<AA,YY,ZZ, String? >{
		 self +^ self.value.alertTitle
	}

	// sound
		// name of resource in app's bundle to play or UILocalNotificationDefaultSoundName
    open func soundName_qk_s(_ soundName:  String? ) -> QKC<AA,YY,ZZ, String? >{
		return link(next: soundName).then_QK { $0.value.soundName = soundName }
	}
    open func soundName_qk_g() -> QKC<AA,YY,ZZ, String? >{
		 self +^ self.value.soundName
	}

	// badge
		// 0 means no change. defaults to 0
    open func applicationIconBadgeNumber_qk_s(_ applicationIconBadgeNumber:  Int ) -> QKC<AA,YY,ZZ, Int >{
		return link(next: applicationIconBadgeNumber).then_QK { $0.value.applicationIconBadgeNumber = applicationIconBadgeNumber }
	}
    open func applicationIconBadgeNumber_qk_g() -> QKC<AA,YY,ZZ, Int >{
		 self +^ self.value.applicationIconBadgeNumber
	}

	// user info
		// throws if contains non-property list types
    open func userInfo_qk_s(_ userInfo:  [AnyHashable : Any]? ) -> QKC<AA,YY,ZZ, [AnyHashable : Any]? >{
		return link(next: userInfo).then_QK { $0.value.userInfo = userInfo }
	}
    open func userInfo_qk_g() -> QKC<AA,YY,ZZ, [AnyHashable : Any]? >{
		 self +^ self.value.userInfo
	}

	// category identifer of the local notification, as set on a UIUserNotificationCategory and passed to +[UIUserNotificationSettings settingsForTypes:categories:]
    @available(iOS 8.0, *)
    open func category_qk_s(_ category:  String?) -> QKC<AA,YY,ZZ, String?>{
		return link(next: category).then_QK { $0.value.category = category }
	}
    @available(iOS 8.0, *)
    open func category_qk_g() -> QKC<AA,YY,ZZ, String?>{
		 self +^ self.value.category
	}

}

